package OOP.Poly_Exercise.PolyExercise_Parameter;

/*
定义员工类Employee，包含姓名和月工资private，以及计算年工资getAnnual的方法。普通员工和经理继承了员工，经理类多了奖金bonus属性和管理manage方法，普通员工类多了work方法，普通员工和经理类要求分别重写getAnnual方法

测试类中添加一个方法showEmpAnnual（Employee），实现获取任何员工对象的
年工资，并在main方法中调用该方法e.getAnnual

测试类中添加一个方法，testwork，如果是普通员工，则调用work方法，如果是经
理，则调用manage方法
 */
public class Test {
    public static void main(String[] args) {
        Employee e = new Manager("元",22222,1212);
        //这里不将下面的方法设置为静态会报错
        //也可以实例化当前类，调用方法
        showemployee(e);
        testwork(e);
        e.getAnnual();
    }

    public static void showemployee(Employee e){
        e.getAnnual();
    }

    public static void testwork(Employee e){
        if(e instanceof OrdinaryEmployee){
            OrdinaryEmployee oe = (OrdinaryEmployee)e;//向下转型
            oe.work();
        }
        else if(e instanceof Manager){
            Manager m = (Manager)e;//向下转型
            m.manage();
        }
        else {}
    }
}
